#include "kiva/kiva.h"

#include <iostream>


int main(int argc, char** argv) {
  // clang-format off
  using namespace kiva::dsl;
  lambda(takes("a"), "a"_n > 0);

  def("factoral", "n:int", {
      if_("n"_n.in({0, 1}), 
        return_(1)
      ), else_{
          return_(1),
          return_( "factoral"_n("n"_n - 1) * "n"_n)
      }
  });


    if_(true, {

    });

  class_("ArgumentParser",inherits( "_AttributeHolder", "_ActionContainer" ), {
      "Object for parsing command line strings into Python objects.",

      def("__init__", takes(self, "prog"_n), gives("None"), {
      }),

      &classmethod,
      def("parse_args", {"self", "args"_n}, {
          print("end"),
          raise(TypeError),
          eval()
      }),

      def("add_argument", {"self", *"args"_n}, {
          pass,
      })
  });

}
